<script>
    // console.log(a);//a is not defined
    // console.log(b);
</script>

<script>

// let是块级作用域  
// 块：语句块（{}里面可以写任何的js语句），具体体现为 {}  if(){}  for(){}  function fun(){}
 


// // 作用域：变量所生效的区域

// // var 全局  局部（函数）
// console.log(a);//undefined
// var a=123
// console.log(a);//123

// function  fun(){
//     console.log(a);//123

//     let  c=456
//     console.log(c);

//     function  fun1(){
//         console.log(c);
//     }

//     fun1()
// }
// fun()


// let 全局  局部（块）
let b="bbbbbbbbbbbbbbbb" // 全局变量，在哪里都能生效
console.log(b);

function fun(){
    console.log(b);

    let  d="ddddddddddddd" // 生效范围是当前函数内
}
fun()

// console.log(d);//d is not defined


if(2>1){
    var e=789 // 全局
    let f="ffffffffffffff" // 局部的  if的{} 也是局部作用域
}

console.log(e);//789
// console.log(f);// f is not defined


for(let i=0;i<5;i++){
    let j=10

    console.log(i,j);
}
// console.log(i,"外面");//i is not defined
// console.log(j,"外面");//i is not defined
// for的小括号也是局部作用域,for内部其实是这样的
/* {
    let i=0;
    {
        let j=10;
        console.log(i,j);
    }
}
{
    let i=1;
    {
        let j=10;
        console.log(i,j);
    }
}
....
{
    let i=4;
    {
        let j=10;
        console.log(i,j);
    }
}
{
    let i=5;
    
} */




// es6支持{}（语句块）单独使用

{
    let n="nnnnnnnnnnnn"
}
console.log(n);//n is not defined




</script>
<script>
    // console.log(a);//123
    // console.log(b);
</script>